description: Implements generally useful query templates.
A work-in-progress library of generally useful templates for rendering queries.
-- priority: 10
-- Renders a page object as a linked list item
templates.pageItem = template.new([==[
* [${name}](${name})
]==])
-- Renders a page object as a linked list item with full path
templates.fullPageItem = template.new([==[
* [${name}|${name}](${name}|${name})
]==])
-- Renders a task object as a togglable task. Anchor refs are bare names
-- (no @ or #) — prefix them with $ so the resulting wikilink resolves
-- through the anchor index. Position/header refs already contain @ or #
-- and pass through unchanged.
templates.taskItem = template.new([==[
* [${state}] [[${string.find(ref, "[@#]") and ref or "$" .. ref}]] ${name}
]==])
-- Renders an item object
templates.itemItem = template.new([==[
* [[${string.find(ref, "[@#]") and ref or "$" .. ref}]] ${name}
]==])
-- Renders a paragraph object
templates.paragraphItem = template.new([==[
* [[${string.find(ref, "[@#]") and ref or "$" .. ref}]] ${text}
]==])
-- Renders a tag object
templates.tagItem = template.new([==[
* [tag:${name}|#${name}](tag:${name}|#${name})
]==])
template.pageItem:
${queryfrom p = index.pages() limit 3 select templates.pageItem(p)}
template.taskItem:
* [ ] Task 1
* [ ] Task 2
${queryfrom t = index.tasks() where t.page == _CTX.currentPage.name select templates.taskItem(t)}
template.itemItem:
* Item 1
* Item 2
${queryfrom i = index.items() where i.page == _CTX.currentPage.name select templates.itemItem(i)}
template.tagItem:
* #tag1
* #tag2
* #tag3
${queryfrom t = index.objects("tag") where t.page == _CTX.currentPage.name select templates.tagItem(t) where t.page == _CTX.currentPage.name select templates.tagItem(t))}